var objectKey = "";
var objectId = "";

layui.config({
    base: basePath,
    version: skyeyeVersion
}).extend({
    window: 'js/winui.window'
}).define(['window', 'table', 'jquery', 'winui', 'form'], function (exports) {
    winui.renderColor();
    var $ = layui.$,
        form = layui.form,
        table = layui.table;
    objectKey = GetUrlParam("objectKey");
    objectId = GetUrlParam("objectId");
    if (isNull(objectKey) || isNull(objectId)) {
        winui.window.msg("请传入适用对象信息", {icon: 2, time: 2000});
        return false;
    }


    var authPermission = teamObjectPermissionUtil.checkTeamBusinessAuthPermission(objectId, 'crmReceivableAuthEnum');


    table.render({
        id: 'messageTable',
        elem: '#messageTable',
        method: 'post',
        url: sysMainMation.crmBasePath + 'queryReceivableList',
        where: getTableParams(),
        even: false,
        page: true,
        limits: getLimits(),
        limit: getLimit(),
        cols: [[
            { title: systemLanguage["com.skyeye.serialNumber"][languageType], type: 'numbers' },
            {
                field: 'oddNumber', title: '单据编号', align: 'left', width: 200, templet: function (d) {
                    return '<a lay-event="details" class="notice-title-click">' + d.oddNumber + '</a>';
                }
            },
            { field: 'invoiceDate', title: '单据日期', align: 'center', width: 140 },
            { field: 'amountPrice', title: '应收金额', width: 100 },
            { field: 'paidPrice', title: '已收金额', width: 100 },
            {
                field: 'payState', title: '收款状态', width: 90, templet: function (d) {
                    return skyeyeClassEnumUtil.getEnumDataNameByCodeAndKey("erpPayStateEnum", 'id', d.payState, 'name');
                }
            },
            { field: 'processInstanceId', title: '流程ID', align: 'center', width: 100, templet: function (d) {
                    return '<a lay-event="processDetails" class="notice-title-click">' + getNotUndefinedVal(d.processInstanceId) + '</a>';
                }},
            { field: 'state', title: '状态', width: 90, templet: function (d) {
                    return skyeyeClassEnumUtil.getEnumDataNameByCodeAndKey("flowableStateEnum", 'id', d.state, 'name');
                }},
            { field: 'createName', title: systemLanguage["com.skyeye.createName"][languageType], width: 120 },
            { field: 'createTime', title: systemLanguage["com.skyeye.createTime"][languageType], align: 'center', width: 150 },
            { field: 'lastUpdateName', title: systemLanguage["com.skyeye.lastUpdateName"][languageType], align: 'left', width: 120 },
            { field: 'lastUpdateTime', title: systemLanguage["com.skyeye.lastUpdateTime"][languageType], align: 'center', width: 150 },
            { title: systemLanguage["com.skyeye.operation"][languageType], fixed: 'right', align: 'center', width: 250, templet: function (d) {
                    var str = '';
                    if (d.editRow == 1) {
                        if (authPermission['submitToApproval']) {
                            str += '<a class="layui-btn layui-btn-xs" lay-event="subApproval">提交审批</a>';
                        }
                        if (authPermission['edit']) {
                            str += '<a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="edit"><language showName="com.skyeye.editBtn"></language></a>';
                        }
                        if (authPermission['delete']) {
                            str += '<a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="del">删除</a>';
                        }
                        if (authPermission['invalid']) {
                            str += '<a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="cancellation">作废</a>';
                        }
                    }
                    if (d.editRow == 2 && d.state == 'inExamine') {
                        if (authPermission['revoke']) {
                            str += '<a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="revoke">撤销</a>';
                        }
                    }
                    return str;
                }}
        ]],
        done: function (json) {
            matchingLanguage();
            initTableSearchUtil.initAdvancedSearch(this, json.searchFilter, form, "请输入单号", function () {
                table.reloadData("messageTable", { page: { curr: 1 }, where: getTableParams() });
            });
        }
    });

    table.on('tool(messageTable)', function (obj) {
        var data = obj.data;
        var layEvent = obj.event;
        if (layEvent === 'edit') { //编辑
            edit(data);
        } else if (layEvent === 'details'){ //详情
            details(data);
        } else if (layEvent === 'processDetails') { //流程详情
            activitiUtil.activitiDetails(data);
        } else if (layEvent === 'subApproval') { //提交审批
            subApproval(data);
        } else if (layEvent === 'del') { //删除
            del(data);
        }else if (layEvent === 'revoke') { //撤销
            revoke(data);
        }
    });

    // 新增
    $("body").on("click", "#addBean", function() {
        parent._openNewWindows({
            url: systemCommonUtil.getUrl('FP2025052800007&objectId=' + objectId + '&objectKey=' + objectKey, null),
            title: systemLanguage["com.skyeye.addPageTitle"][languageType],
            pageId: "financePayAdd",
            area: ['90vw', '90vh'],
            callBack: function (refreshCode) {
                winui.window.msg(systemLanguage["com.skyeye.successfulOperation"][languageType], {icon: 1, time: 2000});
                loadTable();
            }});
    });

    // 编辑
    function edit(data) {
        parent._openNewWindows({
            url: systemCommonUtil.getUrl('FP2025052800008&objectId=' + objectId + '&objectKey=' + objectKey + '&id=' + data.id, null),
            title: systemLanguage["com.skyeye.editPageTitle"][languageType],
            pageId: "financePayEdit",
            area: ['90vw', '90vh'],
            callBack: function (refreshCode) {
                winui.window.msg(systemLanguage["com.skyeye.successfulOperation"][languageType], {icon: 1, time: 2000});
                loadTable();
            }});
    }

    // 详情
    function details(data) {
        parent._openNewWindows({
            url: systemCommonUtil.getUrl('FP2025052800009&objectId=' + objectId + '&objectKey=' + objectKey + '&id=' + data.id, null),
            title: systemLanguage["com.skyeye.detailsPageTitle"][languageType],
            pageId: "financePayDetails",
            area: ['90vw', '90vh'],
            callBack: function (refreshCode) {
            }});
    }
    // 撤销
    function revoke(data) {
        layer.confirm('确认撤销该申请吗？', { icon: 3, title: '撤销操作' }, function (index) {
            layer.close(index);
            AjaxPostUtil.request({
                url: sysMainMation.crmBasePath + "revokeReceivable", params: { processInstanceId: data.processInstanceId }, type: 'json', method: "PUT", callback: function (json) {
                    winui.window.msg("提交成功", { icon: 1, time: 2000 });
                    loadTable();
                }
            });
        });
    }

// 提交审批
    function subApproval(data) {
        layer.confirm(systemLanguage["com.skyeye.approvalOperationMsg"][languageType], {icon: 3, title: systemLanguage["com.skyeye.approvalOperation"][languageType]}, function (index) {
            layer.close(index);
            activitiUtil.startProcess(data.serviceClassName, null, function (approvalId, modelKey) {
                var params = {
                    id: data.id,
                    approvalId: approvalId,
                    modelKey: modelKey
                };
                AjaxPostUtil.request({url: sysMainMation.crmBasePath + "submitReceivableToApproval", params: params, type: 'json', method: 'POST', callback: function (json) {
                        winui.window.msg("提交成功", {icon: 1, time: 2000});
                        loadTable();
                    }});
            });
        });
    }
    // 删除
    function del(data) {
        layer.confirm(systemLanguage["com.skyeye.deleteOperationMsg"][languageType], { icon: 3, title: systemLanguage["com.skyeye.deleteOperation"][languageType] }, function (index) {
            parent.layer.close(index);
            AjaxPostUtil.request({
                url: sysMainMation.crmBasePath + "deleteReceivableById", params: { id: data.id }, type: 'json', method: "DELETE", callback: function (json) {
                    winui.window.msg(systemLanguage["com.skyeye.deleteOperationSuccessMsg"][languageType], { icon: 1, time: 2000 });
                    loadTable();
                }
            });
        });
    }

    form.render();
    $("body").on("click", "#reloadTable", function() {
        loadTable();
    });
    function loadTable() {
        table.reloadData("messageTable", {where: getTableParams()});
    }

    function getTableParams() {
        return $.extend(true, {objectKey: objectKey, objectId: objectId}, initTableSearchUtil.getSearchValue("messageTable"));
    }

    exports('receivableList', {});
});